package com.jcli._java_swing_入门教程pdf.ch17;

import javax.swing.*;
import java.awt.*;

/**
 * @author li
 * @version 1.0
 * @belongsProject novel_20230923
 * @belongsPackage com.jcli._java_swing_入门教程pdf.ch17
 * @className BoxLayoutDemo
 * @description TODO  盒布局管理器
 * @createTime 2024-01-18  21:34
 */
public class BoxLayoutDemo {
    public static void main(String[] args) {
        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
            // 额外设置，可选
            UIManager.put("swing.boldMetal", Boolean.FALSE);
        } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException e) {
            e.printStackTrace();
        }


        JFrame frame = new JFrame("Java示例程序");
    //    创建横向box容器
        Box b1 = Box.createHorizontalBox();
    //    创建纵向box容器
        Box b2 = Box.createVerticalBox();
    //    将外层横向bo添加进窗体
        frame.add(b1);
    //    添加高度为200的垂直框架
        b1.add(Box.createVerticalStrut(200));
    //    添加按钮1
        b1.add(new JButton("西"));
    //    添加长度为140的水平框架
        b1.add(Box.createHorizontalStrut(140));
    //    添加按钮2
        b1.add(new JButton("东"));
    //    添加水平胶水
    //    创建一个不可见的、可以被水平拉伸和收缩的组件
        b1.add(Box.createHorizontalGlue());
    //    添加嵌套的box纵向容器
        b1.add(b2);
    //    添加宽度为100，高度为20的固定区域
    //    创建一个不可见的、总是具有指定大小的组件
        b2.add(Box.createRigidArea(new Dimension(100,20)));
    //    添加按钮3
        b2.add(new JButton("北"));
    //    添加垂直组件
        b2.add(Box.createVerticalGlue());
    //    添加按钮4
        b2.add(new JButton("南"));
    //    添加长度为40的垂直框架
        b2.add(Box.createVerticalStrut(40));
    //    设置窗口的关闭动作，标题，大小位置及可见性
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
        frame.setBounds(666,333,400,200);

    }

}
